import html2canvas from "html2canvas"; // 截图软件引入
import mapTool from "./sgis.map.tool.js";
export default {
  map: {},
  point: {},
  init(id) {
    const map = L.map(id, {
      center: [0, 0],
      zoom: 1,
      zoomControl: false,
      preferCanvas: true
    });
    let _this = this;
    map.on("mousemove", function (e) {
      _this.point = map.layerPointToLatLng(e.layerPoint);
    });
    mapTool.init(map);
    this.map = map;
    // 设置图层zIndex,为后面设置图层顺序作准备 开始
    // map.createPane('overlayPane_zw');
    // map.getPane('overlayPane_zw').style.zIndex = 650;
    // 设置图层zIndex,为后面设置图层顺序作准备 结束
  }, // 地图初始化函数
  getMousePoint() {
    return this.point;
  }, // 获取当前鼠标所在地图的经纬度
  getMap() {
    return this.map;
  }, // 返回地图初始化对象
  panTo(options) {
    this.map.panTo(options);
  }, // 平移地图中心点
  flyTo(lat, zoom, options) {
    this.map.panTo(lat, zoom, options);
  }, // 平移缩放到指定点，平滑移动
  zoomOffset(number) {
    this.map.setZoom(number);
  }, // 地图缩放
  printMapBase64(el) {
    return new Promise(resolve => {
      html2canvas(document.getElementById(el), {
        scale: 1,
        logging: false,
        allowTaint: false,
        useCORS: true
      }).then(canvas => {
        const image = canvas.toDataURL("image/png");
        return resolve(image);
      });
    });
  }, // 将指定元素转化成为base64存储图片格式
  printMap(el) {
    html2canvas(document.getElementById(el), {
      scale: 1
    }).then(canvas => {
      const image = canvas.toDataURL("image/png");
      const oA = document.createElement("a");
      oA.download = ""; // 设置下载的文件名，默认是'下载'
      oA.href = image;
      document.body.appendChild(oA);
      oA.click();
      oA.remove(); // 下载之后把创建的元素删除
    });
  }, // 将指定元素转化成为base64存储图片格式，直接下载该地图
  fullScreen(event, id) {
    let element = document.getElementById("map");
    if (id) {
      element = document.getElementById("id");
    }
    // 确定全屏显示元素
    const requestMethod =
      element.requestFullScreen ||
      element.webkitRequestFullScreen ||
      element.mozRequestFullScreen ||
      element.msRequestFullScreen;
    requestMethod.call(element);
  }, // 全屏放大函数
  calStyle(el) {
    const style = document.defaultView.getComputedStyle(el, null);
    return style;
  } // 元素样式计算
};
